package muhnes.sizoo.dal;

import muhnes.sizoo.HibernateUtilZoologia;
import muhnes.sizoo.modelo.Etiqueta;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 * Clase que implementa los metodos definidos en EtiquetaDao
 * @author Ricardo Orellana
 */
public class EtiquetaDaoImpl  extends GenericoDAO< Etiqueta, Integer >  implements EtiquetaDao {
    
    public EtiquetaDaoImpl() {
        super( HibernateUtilZoologia.getSessionFactory() );
    }
    
    @Override
    protected Class<?> getClaseEntidad () {
        return Etiqueta.class;
    }

    /**
     * Método que verifica la unicidad de las etiquetas
     * 
     */
    @Override
    public boolean verificarUnicidad(Etiqueta entidad) {
        Session sesion = fabricaSesion.getCurrentSession();        
        String hql = "from Etiqueta where upper(nombre) = :nombre ";
        Query consulta = sesion.createQuery( hql );
        consulta.setParameter("nombre", entidad.getNombre().toUpperCase());
        return consulta.uniqueResult() != null ? true : false;
    }

    /**
     * Metodo que devuelve el nombre de una etiqueta
     * 
     */
    @Override
    public Etiqueta buscarPorNombre(String nombre) {
        Session sesion = fabricaSesion.getCurrentSession();        
        String hql = "from Etiqueta where nombre = :nombre";
        Query consulta = sesion.createQuery( hql );
        consulta.setParameter("nombre", nombre);
        Etiqueta etiqueta = (Etiqueta)consulta.uniqueResult();
        return etiqueta;
    }
    
    /**
     * Método que indica que la entidad depende de otra entidad
     *  
     */
    @Override
    public boolean verificarDependencia (Etiqueta entidad) {
        return false;
    }
      
}
